/**
 * Multiworker 2000
 * @brief Classe de persistência do modelo
 * @author André Luiz de Oliveira Vasconcelos
 * @file modelo.h
 * @date 2011
 */

#ifndef MODELO_H
#define MODELO_H

#include <QMap>
#include <QVector>
#include "conexao.h"
#include "campomodelo.h"

class Modelo
{

public:
	Modelo();
    ~Modelo();

    // Setters e Getters
    void setConexao(Conexao arg){ this->conexao = arg; };
    Conexao getConexao(){ return this->conexao; };
    void setTabela(QString arg){ this->tabela = arg; };
    QString getTabela(){ return this->tabela; };
    void addCampo(QString nome, CampoModelo campo){ this->campos[nome] = campo; };
    CampoModelo getCampo(QString nome){ return this->campos[nome]; };

    // Métodos para comandos a serem submetidos ao banco 
    void salvar();
    void apagar();
    void recuperar();
    void recuperarRegistros();
    void limparRegistros(){ this->registros.clear(); };
    int qtdRegistros(){ return this->registros.size(); }; 
    void montaObjeto(int);

private:
    Conexao conexao;
    QString tabela;
    QMap<QString, CampoModelo> campos;
    QVector<Registro> registros;
};

#endif // MODELO_H 
